Setup R notebook Environment

knitr::opts_chunk$set(echo = TRUE)
Sys.setlocale("LC_CTYPE", "en_US.UTF-8")
[1] ""

Package load for Project

packages = c("sp","sf","tidyverse","tmap","rjson", "rgdal", "geojsonio", "GISTools",'spatialEco', "raster","dplyr", "spatstat",
             'maptools', 'leaflet') 
for (p in packages){
  if(!require(p, character.only = T)){
    install.packages(p) 
  } 
  library(p,character.only = T) 
}

Importing Taiwan GDAM Subzone

Shapefile Object with Spatial data Import data for past 12 years

Requires translation of chinese character independetly (https://stat.ethz.ch/pipermail/r-sig-geo/2009-March/005323.html)

Taiwan follows EPSG 3826 (http://spatialreference.org/ref/epsg/twd97-tm2-zone-121/)

taiwan_ts_map_sp <- readOGR(dsn = "data/TAIWAN_TOWNSHIP", layer = "TOWN_MOI_1071226", stringsAsFactors=TRUE)
OGR data source with driver: ESRI Shapefile 
Source: "C:\Users\terence.tan.2015\Desktop\dangy\data\TAIWAN_TOWNSHIP", layer: "TOWN_MOI_1071226"
with 368 features
It has 7 fields
#taiwan <- readShapePoly("data/taiwan_data/")
taiwan <- readOGR(dsn = "data/taiwan_data", layer = "COUNTY_MOI_1071226", stringsAsFactors=TRUE)
OGR data source with driver: ESRI Shapefile 
Source: "C:\Users\terence.tan.2015\Desktop\dangy\data\taiwan_data", layer: "COUNTY_MOI_1071226"
with 22 features
It has 4 fields
#taiwan@proj4string<- CRS( "+init=epsg:3826 +proj=longlat +ellps=WGS84 +no_defs")
#taiwan.union <- aggregate(taiwan)
df_dengue <- jsonlite::fromJSON("data/dengue_case.json") %>% 
  filter(as.Date(Onset_day) >= "1999-01-01" & as.Date(Onset_day)< "2000-01-01")
# Check for NA values for coordinates
 sum(is.na(df_dengue$Minimum_statistical_area_center_point_X))
[1] 0
 sum(is.na(df_dengue$Minimum_statistical_area_center_point_Y))
[1] 0
 df_dengue<- df_dengue[!is.na(df_dengue$Minimum_statistical_area_center_point_X),]
 df_dengue<- df_dengue[!(df_dengue$Minimum_statistical_area_center_point_X == 'None'),]
 
 # Type conversion
 df_dengue[, c(10,11,19,23,24)] <- sapply(df_dengue[, c(10,11,19,23,24)], as.numeric)
NAs introduced by coercionNAs introduced by coercion
 
  # Transform into SF object
 sf_dengue <- st_as_sf(df_dengue, 
                       coords = c("Minimum_statistical_area_center_point_X",
                                  "Minimum_statistical_area_center_point_Y"),
                        crs = "+init=epsg:3826 +proj=longlat +ellps=WGS84 +no_defs",na.fail=FALSE)
sf_dengue <- na.omit(sf_dengue)
sp_dengue <- as(sf_dengue, 'Spatial')
sp_dengue <- as(sp_dengue, 'SpatialPoints')
tmap_mode("view")
tmap mode set to interactive viewing
tm_shape(taiwan)+
       tm_borders(col = "grey40",alpha=0.5)+
  # prevent zoom too much
  tm_view(alpha = 1, set.zoom.limits = c(7,21))+
  tm_layout(basemaps = c('OpenStreetMap'))+
  tm_shape(sp_dengue)+
  tm_dots(col ="red",size = 0.01) 
As of version 2.0, basemaps and basemaps.alpha have to be called from tm_view

tmap_mode("plot")
tmap mode set to plotting

Converting the generic sp format into spatstat’s ppp format

dengue_ppp <- as(sp_dengue, "ppp")
summary(dengue_ppp) 

Combining GP clinics points and the study area

dengue_ppp <- as(sp_dengue, "ppp")
summary(dengue_ppp) 
Planar point pattern:  699 points
Average intensity 148.3408 points per square unit

*Pattern contains duplicated points*

Coordinates are given to 6 decimal places

Window: rectangle = [120.15043, 121.79933] x [22.322371, 25.180104] units
Window area = 4.71212 square units
plot(dengue_ppp)

qt <- quadrat.test(dengueTW_ppp,                     
                   nx = 20, ny = 15)
plot(dengueTW_ppp) 
plot(qt, add = TRUE, cex =.1) 
tw_owin <- as(taiwan_ts_map_sp, "owin") 
plot(tw_owin) 

summary(tw_owin)
Window: polygonal boundary
1007 separate polygons (no holes)
enclosing rectangle: [118.13797, 124.56115] x [21.8956, 26.385278] units
Window area = 3.26423 square units
Fraction of frame area: 0.113
dengueTW_ppp = dengue_ppp[tw_owin]
dengueTW_ppp <- unique(dengueTW_ppp) 
summary(dengueTW_ppp)
Planar point pattern:  646 points
Average intensity 197.9024 points per square unit

Coordinates are given to 6 decimal places

Window: polygonal boundary
1007 separate polygons (no holes)
enclosing rectangle: [118.13797, 124.56115] x [21.8956, 26.385278] units
Window area = 3.26423 square units
Fraction of frame area: 0.113
#plot(dengueTW_ppp)

Kernel Density Estimation

#dengueTW_ppp.km <- rescale(dengueTW_ppp, 1000, "km") 
kde_taiwan_bw <- density(dengueTW_ppp.km, sigma=bw.diggle, edge=TRUE, kernel="gaussian")

#plot(kde_taiwan_bw)
plot(kde_taiwan_bw)
LS0tDQp0aXRsZTogImZlYXR1cmUta2RhIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KU2V0dXAgUiBub3RlYm9vayBFbnZpcm9ubWVudA0KYGBge3Igc2V0dXAsIGluY2x1ZGU9VFJVRSwgZXZhbD1UUlVFLG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpDQpTeXMuc2V0bG9jYWxlKCJMQ19DVFlQRSIsICJlbl9VUy5VVEYtOCIpDQpgYGANCg0KI1BhY2thZ2UgbG9hZCBmb3IgUHJvamVjdA0KYGBge3J9DQpwYWNrYWdlcyA9IGMoInNwIiwic2YiLCJ0aWR5dmVyc2UiLCJ0bWFwIiwicmpzb24iLCAicmdkYWwiLCAiZ2VvanNvbmlvIiwgIkdJU1Rvb2xzIiwnc3BhdGlhbEVjbycsICJyYXN0ZXIiLCJkcGx5ciIsICJzcGF0c3RhdCIsDQogICAgICAgICAgICAgJ21hcHRvb2xzJywgJ2xlYWZsZXQnKSANCmZvciAocCBpbiBwYWNrYWdlcyl7DQogIGlmKCFyZXF1aXJlKHAsIGNoYXJhY3Rlci5vbmx5ID0gVCkpew0KICAgIGluc3RhbGwucGFja2FnZXMocCkgDQogIH0gDQogIGxpYnJhcnkocCxjaGFyYWN0ZXIub25seSA9IFQpIA0KfQ0KYGBgDQoNCiNJbXBvcnRpbmcgVGFpd2FuIEdEQU0gU3Viem9uZQ0KU2hhcGVmaWxlIE9iamVjdCB3aXRoIFNwYXRpYWwgZGF0YQ0KSW1wb3J0IGRhdGEgZm9yIHBhc3QgMTIgeWVhcnMNCg0KUmVxdWlyZXMgdHJhbnNsYXRpb24gb2YgY2hpbmVzZSBjaGFyYWN0ZXIgaW5kZXBlbmRldGx5IChodHRwczovL3N0YXQuZXRoei5jaC9waXBlcm1haWwvci1zaWctZ2VvLzIwMDktTWFyY2gvMDA1MzIzLmh0bWwpDQoNClRhaXdhbiBmb2xsb3dzIEVQU0cgMzgyNiAoaHR0cDovL3NwYXRpYWxyZWZlcmVuY2Uub3JnL3JlZi9lcHNnL3R3ZDk3LXRtMi16b25lLTEyMS8pDQpgYGB7cn0NCnRhaXdhbl90c19tYXBfc3AgPC0gcmVhZE9HUihkc24gPSAiZGF0YS9UQUlXQU5fVE9XTlNISVAiLCBsYXllciA9ICJUT1dOX01PSV8xMDcxMjI2Iiwgc3RyaW5nc0FzRmFjdG9ycz1UUlVFKQ0KDQojdGFpd2FuIDwtIHJlYWRTaGFwZVBvbHkoImRhdGEvdGFpd2FuX2RhdGEvIikNCnRhaXdhbiA8LSByZWFkT0dSKGRzbiA9ICJkYXRhL3RhaXdhbl9kYXRhIiwgbGF5ZXIgPSAiQ09VTlRZX01PSV8xMDcxMjI2Iiwgc3RyaW5nc0FzRmFjdG9ycz1UUlVFKQ0KI3RhaXdhbkBwcm9qNHN0cmluZzwtIENSUyggIitpbml0PWVwc2c6MzgyNiArcHJvaj1sb25nbGF0ICtlbGxwcz1XR1M4NCArbm9fZGVmcyIpDQojdGFpd2FuLnVuaW9uIDwtIGFnZ3JlZ2F0ZSh0YWl3YW4pDQoNCg0KZGZfZGVuZ3VlIDwtIGpzb25saXRlOjpmcm9tSlNPTigiZGF0YS9kZW5ndWVfY2FzZS5qc29uIikgJT4lIA0KICBmaWx0ZXIoYXMuRGF0ZShPbnNldF9kYXkpID49ICIxOTk5LTAxLTAxIiAmIGFzLkRhdGUoT25zZXRfZGF5KTwgIjIwMDAtMDEtMDEiKQ0KDQojIENoZWNrIGZvciBOQSB2YWx1ZXMgZm9yIGNvb3JkaW5hdGVzDQogc3VtKGlzLm5hKGRmX2Rlbmd1ZSRNaW5pbXVtX3N0YXRpc3RpY2FsX2FyZWFfY2VudGVyX3BvaW50X1gpKQ0KIHN1bShpcy5uYShkZl9kZW5ndWUkTWluaW11bV9zdGF0aXN0aWNhbF9hcmVhX2NlbnRlcl9wb2ludF9ZKSkNCiBkZl9kZW5ndWU8LSBkZl9kZW5ndWVbIWlzLm5hKGRmX2Rlbmd1ZSRNaW5pbXVtX3N0YXRpc3RpY2FsX2FyZWFfY2VudGVyX3BvaW50X1gpLF0NCiBkZl9kZW5ndWU8LSBkZl9kZW5ndWVbIShkZl9kZW5ndWUkTWluaW11bV9zdGF0aXN0aWNhbF9hcmVhX2NlbnRlcl9wb2ludF9YID09ICdOb25lJyksXQ0KIA0KICMgVHlwZSBjb252ZXJzaW9uDQogZGZfZGVuZ3VlWywgYygxMCwxMSwxOSwyMywyNCldIDwtIHNhcHBseShkZl9kZW5ndWVbLCBjKDEwLDExLDE5LDIzLDI0KV0sIGFzLm51bWVyaWMpDQogDQogICMgVHJhbnNmb3JtIGludG8gU0Ygb2JqZWN0DQogc2ZfZGVuZ3VlIDwtIHN0X2FzX3NmKGRmX2Rlbmd1ZSwgDQogICAgICAgICAgICAgICAgICAgICAgIGNvb3JkcyA9IGMoIk1pbmltdW1fc3RhdGlzdGljYWxfYXJlYV9jZW50ZXJfcG9pbnRfWCIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1pbmltdW1fc3RhdGlzdGljYWxfYXJlYV9jZW50ZXJfcG9pbnRfWSIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgY3JzID0gIitpbml0PWVwc2c6MzgyNiArcHJvaj1sb25nbGF0ICtlbGxwcz1XR1M4NCArbm9fZGVmcyIsbmEuZmFpbD1GQUxTRSkNCnNmX2Rlbmd1ZSA8LSBuYS5vbWl0KHNmX2Rlbmd1ZSkNCnNwX2Rlbmd1ZSA8LSBhcyhzZl9kZW5ndWUsICdTcGF0aWFsJykNCmBgYA0KDQpgYGB7cn0NCnNwX2Rlbmd1ZSA8LSBhcyhzcF9kZW5ndWUsICdTcGF0aWFsUG9pbnRzJykNCmBgYA0KDQpgYGB7cn0NCnRtYXBfbW9kZSgidmlldyIpDQp0bV9zaGFwZSh0YWl3YW4pKw0KICAgICAgIHRtX2JvcmRlcnMoY29sID0gImdyZXk0MCIsYWxwaGE9MC41KSsNCiAgIyBwcmV2ZW50IHpvb20gdG9vIG11Y2gNCiAgdG1fdmlldyhhbHBoYSA9IDEsIHNldC56b29tLmxpbWl0cyA9IGMoNywyMSkpKw0KICB0bV9sYXlvdXQoYmFzZW1hcHMgPSBjKCdPcGVuU3RyZWV0TWFwJykpKw0KICB0bV9zaGFwZShzcF9kZW5ndWUpKw0KICB0bV9kb3RzKGNvbCA9InJlZCIsc2l6ZSA9IDAuMDEpIA0KDQp0bWFwX21vZGUoInBsb3QiKQ0KYGBgDQoNCg0KIyBDb252ZXJ0aW5nIHRoZSBnZW5lcmljIHNwIGZvcm1hdCBpbnRvIHNwYXRzdGF0J3MgcHBwIGZvcm1hdCANCg0KYGBge3IgZWNobz1UUlVFLCBldmFsPVRSVUV9DQpkZW5ndWVfcHBwIDwtIGFzKHNwX2Rlbmd1ZSwgInBwcCIpDQpzdW1tYXJ5KGRlbmd1ZV9wcHApIA0KYGBgDQoNCiMgQ29tYmluaW5nICBHUCBjbGluaWNzIHBvaW50cyBhbmQgdGhlIHN0dWR5IGFyZWEgDQpgYGB7ciBlY2hvPVRSVUUsIGV2YWw9VFJVRX0NCnR3X293aW4gPC0gYXModGFpd2FuLCAib3dpbiIpIA0KcGxvdCh0d19vd2luKSANCnN1bW1hcnkodHdfb3dpbikNCg0KZGVuZ3VlVFdfcHBwID0gZGVuZ3VlX3BwcFt0d19vd2luXQ0Kc3VtbWFyeShkZW5ndWVUV19wcHApDQojcGxvdChkZW5ndWVUV19wcHApDQpgYGANCmBgYHtyfQ0KcXQgPC0gcXVhZHJhdC50ZXN0KGRlbmd1ZVRXX3BwcCwgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICBueCA9IDIwLCBueSA9IDE1KQ0KYGBgDQoNCmBgYHtyfQ0KcGxvdChkZW5ndWVUV19wcHApIA0KcGxvdChxdCwgYWRkID0gVFJVRSwgY2V4ID0uMSkgDQpgYGANCg0KYGBge3J9DQpxdA0KYGBgDQoNCg0KIyBLZXJuZWwgRGVuc2l0eSBFc3RpbWF0aW9uDQoNCmBgYHtyIGVjaG89VFJVRSwgZXZhbD1UUlVFfQ0KI2Rlbmd1ZVRXX3BwcC5rbSA8LSByZXNjYWxlKGRlbmd1ZVRXX3BwcCwgMTAwMCwgImttIikgDQprZGVfdGFpd2FuX2J3IDwtIGRlbnNpdHkoZGVuZ3VlVFdfcHBwLmttLCBzaWdtYT1idy5kaWdnbGUsIGVkZ2U9VFJVRSwga2VybmVsPSJnYXVzc2lhbiIpDQoNCiNwbG90KGtkZV90YWl3YW5fYncpDQpgYGANCg0KYGBge3J9DQpwbG90KGtkZV90YWl3YW5fYncpDQpgYGANCg0K